public class TheLongestSubstringWithNoRepeatCharacter {
    // 无重复字符的最长子串 https://leetcode.cn/problems/longest-substring-without-repeating-characters/
    public int lengthOfLongestSubstring(String s) {
        char[] arr=s.toCharArray();
        int[] hash=new int[128];//用数组模拟哈希表,数组长度为128,存储ASCII码值从0~127的所有字符
        int left=0,right=0;
        int n=s.length();
        int ret=0;
        while(right<n) {
            hash[arr[right]]++;//入窗口
            while(hash[arr[right]]>1) {
                hash[arr[left++]]--;//出窗口
            }
            ret=Math.max(ret,right-left+1);//更新结果
            right++;
        }
        return ret;
    }
}
